﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include <string>
#include "GcmpDwgDxfInterface.h"

namespace gcmp
{
    /// \brief 文字样式
    class GCMP_DWG_DXF_INTERFACE_EXPORT ICADTextStyle
    {
    public:
        /// \brief 创建文字样式对象
        ///
        /// 默认的倾斜角度为0
        /// 其他值未设置，需要调用相应的Set方法设置
        /// \return 返回文字样式类对象
        static OwnerPtr<ICADTextStyle> Create();

        /// \brief 设置文字样式的名字
        /// \param styleName 文字样式的名字。
        /// \return true-设置成功；false-设置失败
        virtual bool SetStyleName(std::wstring styleName) = 0;

        /// \brief 获取文字样式的名字
        /// \return 文字样式的名字
        virtual std::wstring GetStyleName() const = 0;

        /// \brief 设置文字样式是否是粗体
        /// \param isBold 是否是粗体
        /// \return true-设置成功；false-设置失败
        virtual bool SetBold(bool isBold) = 0;

        /// \brief 获取文字样式是否是粗体
        /// \return 文字是否粗体
        virtual bool GetBold() const = 0;

        /// \brief 设置文字样式中字体名字
        /// \param styleName 文字字体名字。
        /// \return true-设置成功；false-设置失败
        virtual bool SetFontName(std::wstring fontName) = 0;

        /// \brief 获取文字的字体名字
        /// \return 文字的字体名字
        virtual std::wstring GetFontName()const = 0;

        /// \brief 设置文字样式中字体样式
        /// \param fontStyle 字体样式
        /// \return true-设置成功；false-设置失败
        virtual bool SetFontStyle(std::wstring fontStyle) = 0;

        /// \brief 获取文字的字体样式
        /// \return 文字的字体样式
        virtual std::wstring GetFontStyle() const = 0;

        /// \brief 设置文字大字体名字
        /// \param bigFontFileName 大字体
        /// \return true-设置成功；false-设置失败
        virtual bool SetBigFontFileName(std::wstring bigFontFileName) = 0;

        /// \brief 获取文字样式的大字体
        /// \return 文字样式的大字体
        virtual std::wstring GetBigFontFileName() const = 0;

        /// \brief 设置文字的宽度因子
        /// \param xScale 文字的宽度
        /// \return true-设置成功；false-设置失败
        virtual bool SetXScale(double xScale) = 0;

        /// \brief 获取文字样式的宽度
        /// \return 文字样式的宽度
        virtual double GetXScale() const = 0;

        /// \brief 设置文字的倾斜角度(弧度)
        /// \param xScale 文字的倾斜角度
        /// \return true-设置成功；false-设置失败
        virtual bool SetObliquingAngle(double obliquingAngle) = 0;

        /// \brief 获取文字的倾斜角度(弧度)
        /// \return 文字的倾斜角度
        virtual double GetObliquingAngle() const = 0;

        /// \brief 拷贝文字样式设置
        /// \return 返回拷贝文字样式设置
        virtual OwnerPtr<ICADTextStyle> Clone() const = 0;

        virtual ~ICADTextStyle();
    };

}

